﻿/** 
 *   Personaje: El personaje que es controlado por el usuario
 *  
 *   @see Hardware ElemGrafico Juego
 *   @author 1-DAI IES San Vicente 2010/11
 */

/* --------------------------------------------------
   Versiones hasta la fecha:
   
   Num.   Fecha       Por / Cambios
   ---------------------------------------------------
   0.01  17-Dic-2010  Nacho Cabanes
                      Personaje inicial, con una imagen, capaz de
                        moverse a la derecha,izquierda, arriba, abajo
                         y (vacio) Disparar o Mover de forma automatica
                         
   0.02  20-Ene-2011  Héctor Pastor
   					  Modificada para que el personaje corresponda al
   					  de Donkey Kong
 ---------------------------------------------------- */

using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
public class Personaje : ElemGrafico
{

  // Datos del personaje
  //Partida miPartida; // Para poder comunicar con la partida
                     // y preguntarle sobre enemigos, mapa, etc   
  short vidas;  // Vidas restantes
  bool muriendo;
  int contador = 0;
  int contadorMuerte = 0;
  // Constructor

  public Personaje(ContentManager c) : base ("personajed1", c)
  {
    x = 400;         // Resto de valores iniciales
    y = 300;
    vidas = 3;
    CargarSecuencia(DERECHA,
            new string[] {"personajed1", "personajed1", 
                          "personajed2", "personajed2", 
                          "personajed3", "personajed3"}, c);
    CargarSecuencia(IZQUIERDA,
            new string[] {"personajei1", "personajei1", 
                          "personajei2", "personajei2", 
                          "personajei3", "personajei3"}, c);
    CargarSecuencia( MURIENDO, 
      new string[] {"personaje_m1","personaje_m1","personaje_m1",
                    "personaje_m2","personaje_m2","personaje_m2",
                    "personaje_m3","personaje_m3","personaje_m3",
                    "personaje_m4","personaje_m4","personaje_m4",
                    "personaje_m5","personaje_m5","personaje_m5",
                    "personaje_m5","personaje_m5","personaje_m5"}, c );
	muriendo = false;
    direccion = DERECHA;
    SetAnchoAlto(32, 32); // Si se carga secuencia, ancho y alto deben ir detras
  }
  
  // Métodos de movimiento
  public void MoverDerecha() 
  {
  	  if (muriendo) return;	
  	  //if (miPartida.GetMapa().EsPosibleMover(x + incrX, y + alto - 4,
  	  //                                       x + ancho + incrX, y + alto))
  	  {
  	  CambiarDireccion(DERECHA);
      x += 4;
      SiguienteFotograma();
  	  }
  }

  public void MoverIzquierda()
  {
      if (muriendo) return;
  	  CambiarDireccion(IZQUIERDA);
      x -= 4;
      SiguienteFotograma();
  }

  public void MoverArriba()
  {
  	  if (muriendo) return;	
      y -= 4;
  }

  public void MoverAbajo()
  {
  	  if (muriendo) return;	
      y += 4;
  }
  
  // Para cuando deba moverse solo, p.ej. saltando, o en
  // movimiento continuo, como el PacMan
  public new void Mover()
  {
      if (! muriendo) return;
      if (contadorMuerte >= 5)
      {
          SiguienteFotograma();
          contador++;
          contadorMuerte = 0;
      }
      if (contador > 17)
      {
          Reiniciar();
          contadorMuerte = 0;
      	  contador = 0;
      	  muriendo = false;
      	  CambiarDireccion(DERECHA);
      	  vidas--;
      }
      contadorMuerte++;

  }

  public bool getMuriendo()
  {
      return muriendo;
  }
  
  public void Disparar()
  {
      // TODO: Vacio por ahora
  }
  
  
  // Métodos de acceso a las vidas
  public int GetVidas()
  {
    return vidas;
  }
  
  public void Reiniciar()
  {
  	x = 400;
  	y = 300;
  }
    
  public void SetVidas(short n)
  {
    vidas = n;
  }

  public void Morir()
  {
  	if (muriendo) return;
  	CambiarDireccion(MURIENDO);
    muriendo = true;
  }


} /* fin de la clase Personaje */
